Accessing
a File I/O Buffer
The following
example accesses an I/O buffer directly to read data from a waveform-audio
file.
HMMIO
hmmio;
MMIOINFO mmioinfo;
DWORD
dwDataSize;
DWORD
dwCount;
HPSTR hptr;
// Get information about the file I/O buffer.
if (mmioGetInfo(hmmio, &mmioinfo, 0))
{
Error("Failed to get I/O buffer info.");
.
.
.
mmioClose(hmmio, 0);
return;
}
// Read the entire file by directly reading the file
I/O buffer.
// When the end of the I/O buffer is reached,
advance the buffer.
for (dwCount = dwDataSize, hptr = lpData;
dwCount 0; dwCount--)
{
// Check
to see if the I/O buffer must be advanced.
if
(mmioinfo.pchNext == mmioinfo.pchEndRead)
{
if(mmioAdvance(hmmio, &mmioinfo, MMIO_READ))
{
Error("Failed to advance buffer.");
.
.
.
mmioClose(hmmio, 0);
return;
}
}
// Get a
character from the buffer.
*hptr++ =
*mmioinfo.pchNext++;
}
// End direct buffer access and close the file.
mmioSetInfo(hmmio, &mmioinfo, 0);
mmioClose(hmmio, 0);
When you
finish accessing a file I/O buffer, call the mmioSetInfo